package cz.vargagab.repo;

import java.util.List;
import java.util.Queue;

import cz.vargagab.domain.ClientRmiNode;
import cz.vargagab.domain.Request;
import cz.vargagab.domain.Response;
import cz.vargagab.domain.ServerRmiNode;

/**
 * Interface that the nodes can use for calling the client via RMI
 * @author Gabriel Varga
 *
 */
public interface ExternalClientService {

	public void testConnection ();
	
	public void updateClients( List<ClientRmiNode> clients);

	public void updateServer (ServerRmiNode server);
	
	public void dc();
	
	public ServerRmiNode getServer();
	
	public Queue<Request> getQueue();
	
	public  void sendRequest(Request r) throws InterruptedException;
	
	public void sendReply(Response response);
	
	public void sendRelease (Request r);
}
